The use of graphical user interfaces has created a revolution in the field of computers. Instead of having to memorize arcane commands, the user can now manipulate software applications simply by controlling graphical objects representing their various functions and components. For example, instead of requiring a user to delete a file with a delete command, some operating systems, such as the Microsoft Windows® operating system, allow a user to delete a file by dragging a graphical object representing the file to a graphical object representing a trash can.
The capability of these graphical user interfaces to manipulate software through graphical objects has even been expanded to allow a user to input data through handwriting. For example, with some software applications, a user may employ a stylus to write on a digitizer, and the data points measured by the digitizer are then collected and rendered as lines on a display. Because the lines rendered from these data points resemble actual ink written with a pen, the data points are often referred to as electronic ink, and the characters, words and drawings formed with this electronic ink are often referred to as electronic ink objects. Some software applications even recognize when the shapes of these lines of electronic ink objects correspond to characters, and convert the recognized shapes into text data. This recognition ability conveniently allows the user to input text data into the computer using the natural, familiar, process of handwriting.
One problem that has arisen with the use of such graphical objects, however, relates to the individual selection of such graphical objects within a graphical user interface. Because these software applications may conveniently allow a user to place a graphical object at a variety of locations in the two-dimensional space of a user interface, it is sometimes difficult for a user to subsequently select one or more of these graphical objects of its for manipulation. For example, a user may write one word spaced between two very closely adjacent words. If the user subsequently decides to move or delete only the middle word, the user may have difficulty selecting that middle word for manipulation without inadvertently selecting one of the adjacent words. Further, a user may write words at an odd angle, or desire to select words broken up across multiple lines. A user may thus have difficulty in selecting the desired words without selecting other words or graphical objects inadvertently.
Various tools have been developed to assist a user in selecting specific graphical objects for manipulation. For example, some software applications allow a user to form a “rubber band” rectangle around one or more adjacent graphical objects. With this rubber band rectangle tool, a user activates the selection function, places a cursor at a first location, and then drags the cursor to a second location. As the cursor is being dragged, the tool forms a rectangular selection box with the first location of the cursor and the current location of the cursor as opposite vertices of the selection box. By continuing to drag the cursor, a user can change the dimensions of the selection box to encompass one or more graphical objects. When the user releases the selection function, the graphical objects completely encompassed by the selection box are selected for subsequent manipulation.
While this type of selection tool provides some ability for a user to select individual graphical objects, this tool has several drawbacks. First, the tool only forms a single rectangular selection area. In many cases, a user may wish to select multiple graphical objects that cannot be bounded by a single rectangular selection box without that box also encompassing graphical objects that the user does not wish to select. This is a particularly significant drawback when the graphical objects are handwritten words, and a user may often want to simultaneously select words at one end of a line of writing and words at the opposite end of the next line of writing. Second, in order to select a graphical object, the selection box must completely encompass that object. If a user is working quickly, the user may inadvertently form a selection box that does not entirely encompass a desired graphical object. When the user then releases the selection function, the desired object will not be selected. Some alternate embodiments of this tool require the selection box to encompass only a designated center of a graphical object, but the user may still encircle a large portion of a desired object without actually selecting that object. Thus, the use of this tool requires an inconvenient amount of precision from the user. Further, when using a stylus to form the selection box, the user is unable to add or subtract parts of the selection.
Another tool that has been developed to help a user select graphical objects is the lasso select tool. With this tool, the user activates the selection function, and then draws a freeform line of selection ink about any object the user wishes to select. When the user releases the selection function, the tool calculates a straight connection line between the two ends of the selection line to form a “lasso” enclosure around the enclosed objects. Only the objects (or portions therefore) that are entirely enclosed within the lasso enclosure are then selected for manipulation. The conventional lasso select tool also has its disadvantages, however. First, the conventional lasso select tool selects only a portion of an object encompassed by the lasso enclosure. Thus, if the user does not fully encircle an object, the portions of the object outside of the lasso enclosure will not be selected and manipulated with the portion of the object within the lasso. This is particular problem for selecting ink objects, because letters will often have irregular shapes, may have ascenders (such as “h,” “b,” and “d”) or descenders (such as “j,” “g,” and “q”) that a user will inadvertently miss with a lasso enclosure.
Second, the tool does not change the appearance of selected objects until after the selection process has been completed. The user thus cannot judge with certainty how much of an object has been selected when forming the lasso, and must wait until the lasso is complete (that is, until it is too late to change the shape of the lasso) before being able to ascertain what objects are selected with the lasso. As with the previously described selection tools, the conventional lasso select tool therefore also requires an inconvenient amount of precision from the user.
Accordingly, there is a need for a selection tool that will allow a user to conveniently select one or more graphical objects in their entirety, without requiring an inconvenient amount of precision from the user. Further, there is a need for a selection tool that clearly indicates to the user when one or more objects actually are selected during the selection process, while the lasso is still being drawn.